#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
详细时间分析：1762331503574 毫秒时间戳的完整转换过程
"""

from datetime import datetime, timezone
import pytz

def main():
    timestamp_ms = 1762331503574
    
    print("=== 毫秒时间戳 1762331503574 的详细分析 ===")
    print(f"毫秒时间戳: {timestamp_ms}")
    
    # 转换为秒
    timestamp_seconds = timestamp_ms / 1000
    print(f"转换为秒: {timestamp_seconds}")
    
    # 转换为UTC datetime
    utc_datetime = datetime.fromtimestamp(timestamp_seconds, tz=timezone.utc)
    print(f"UTC时间: {utc_datetime}")
    print(f"UTC时间字符串: {utc_datetime.strftime('%Y-%m-%d %H:%M:%S')}")
    
    # 转换为荷兰时间
    amsterdam_tz = pytz.timezone('Europe/Amsterdam')
    amsterdam_datetime = utc_datetime.astimezone(amsterdam_tz)
    print(f"荷兰时间: {amsterdam_datetime}")
    print(f"荷兰时间字符串: {amsterdam_datetime.strftime('%Y-%m-%d %H:%M:%S')}")
    
    # 检查是否是夏令时
    is_dst = amsterdam_datetime.dst() != timedelta(0)
    print(f"荷兰时间是否夏令时: {is_dst}")
    
    # 对比你提供的时间
    provided_time = "2025-11-05 10:31:42"
    print(f"\n你提供的时间: {provided_time}")
    print(f"时间戳转换结果: {amsterdam_datetime.strftime('%Y-%m-%d %H:%M:%S')}")
    
    # 计算差异
    provided_datetime = datetime.strptime(provided_time, '%Y-%m-%d %H:%M:%S')
    provided_datetime = amsterdam_tz.localize(provided_datetime)
    
    diff_seconds = abs((amsterdam_datetime - provided_datetime).total_seconds())
    diff_hours = diff_seconds / 3600
    
    print(f"\n时间差异: {diff_seconds:.1f} 秒 = {diff_hours:.1f} 小时")
    
    # 可能的解释
    print(f"\n=== 可能的原因分析 ===")
    print(f"1. 时区设置问题: 时间戳转换考虑了夏令时，可能与你预期不符")
    print(f"2. 时间基准不同: 时间戳通常是UTC基准，而字符串时间可能是本地时间")
    print(f"3. 夏令时影响: 11月欧洲通常使用标准时间（非夏令时）")
    
    # 验证标准时间转换
    print(f"\n=== 标准时间验证 ===")
    # 11月通常是标准时间，UTC+1
    expected_offset = timedelta(hours=1)
    expected_amsterdam = utc_datetime + expected_offset
    print(f"标准时间下的荷兰时间: {expected_amsterdam.strftime('%Y-%m-%d %H:%M:%S')}")

if __name__ == "__main__":
    from datetime import timedelta
    main()